In [101]:
import os
import librosa
import librosa.display
import IPython.display as ipd
import numpy as np
import matplotlib.pyplot as plt

FRAME_SIZE=1024
HOP_SIZE=128

birds = [["Barred Owl", "barred_owl.mp3"],
         ["Northern Cardinal", "northern_cardinal.mp3"],
         ["Wood Thrush", "wood_thrush.mp3"]
        ]
In [102]:
def plot_spectrogram(title, file, frame_size=FRAME_SIZE, hop_length=HOP_SIZE, y_axis="log"):
    signal, sr = librosa.load(file,duration=10)
    fourier = librosa.stft(signal, n_fft=frame_size, hop_length=hop_length)
    Y = librosa.power_to_db(np.abs(fourier)**2, amin=1)
    plt.figure(figsize=(25, 10))
    librosa.display.specshow(Y, 
                             sr=sr, 
                             hop_length=hop_length, 
                             x_axis="time", 
                             y_axis=y_axis)
    plt.colorbar(format="%+2.f")
    plt.suptitle(title)
    plt.savefig(os.path.splitext(file)[0]+".png")
In [103]:
plot_spectrogram(birds[0][0], birds[0][1])
ipd.Audio(birds[0][1])
Out[103]:
Your browser does not support the audio element.
No description has been provided for this image
In [104]:
plot_spectrogram(birds[1][0], birds[1][1])
ipd.Audio(birds[1][1])
Out[104]:
Your browser does not support the audio element.
No description has been provided for this image
In [105]:
plot_spectrogram(birds[2][0], birds[2][1])
ipd.Audio(birds[2][1])
Out[105]:
Your browser does not support the audio element.
No description has been provided for this image